eth_sendTransaction のデフォルト値を調べる
eth_sendTransaction の gas のデフォルト値が 90000 という記述があり、その値が正しいか気になって調査をしてみた。
結論としては、20180814 現在正しいっぽい。
該当の箇所
code:setDefaults.go
// setDefaults is a helper function that fills in default values for unspecified tx fields.
func (args *SendTxArgs) setDefaults(ctx context.Context, b Backend) error {
if args.Gas == nil {
args.Gas = new(hexutil.Uint64)
*(*uint64)(args.Gas) = 90000
}
if args.GasPrice == nil {
price, err := b.SuggestPrice(ctx)
if err != nil {
return err
}
args.GasPrice = (*hexutil.Big)(price)
}
if args.Value == nil {
args.Value = new(hexutil.Big)
}
if args.Nonce == nil {
nonce, err := b.GetPoolNonce(ctx, args.From)
if err != nil {
return err
}
args.Nonce = (*hexutil.Uint64)(&nonce)
}
if args.Data != nil && args.Input != nil && !bytes.Equal(*args.Data, *args.Input) {
return errors.New(Both "data" and "input" are set and not equal. Please use "input" to pass transaction call data.)
}
if args.To == nil {
// Contract creation
var input []byte
if args.Data != nil {
input = *args.Data
} else if args.Input != nil {
input = *args.Input
}
if len(input) == 0 {
return errors.New(contract creation without any data provided)
}
}
return nil
}
トランザクションのデフォルト値をセットするメソッド
gas が指定されていなければ 90000 をセットしている。
gasPrice は次の箇所で計算している